package storm.applications.spout.parser;
import com.google.common.collect.ImmutableList;
import java.util.List;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import storm.applications.util.stream.StreamValues;
/**
*
* @author Maycon Viana Bordin <mayconbordin@gmail.com>
*/
public class JsonParser extends Parser {
private static final Logger LOG = LoggerFactory.getLogger(JsonParser.class);
private static final JSONParser jsonParser = new JSONParser();
@Override
public List<StreamValues> parse(String input) {
input = input.trim();
if (input.isEmpty() || (!input.startsWith("{") && !input.startsWith("[")))
return null;
try {
JSONObject json = (JSONObject) jsonParser.parse(input);
return ImmutableList.of(new StreamValues(json));
} catch (ParseException e) {
LOG.error(String.format("Error parsing JSON object: %s", input), e);
}
return null;
}
}